// index.js
const request = require('../../utils/request')
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'

Page({
  data: {
    motto: 'Hello World',
    userInfo: {
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
    // 轮播图数据
    bannerList: [],
    // 文章列表
    articleList: [],
    // 是否正在加载数据
    loading: false,
    // 页码
    page: 1,
    // 每页显示数量
    pageSize: 5,
    // 是否还有更多数据
    hasMore: true,
    // 总文章数
    total: 0
  },
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    const { nickName } = this.data.userInfo
    this.setData({
      "userInfo.avatarUrl": avatarUrl,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  onInputChange(e) {
    const nickName = e.detail.value
    const { avatarUrl } = this.data.userInfo
    this.setData({
      "userInfo.nickName": nickName,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面显示
   * 每次显示页面时都重新请求数据，确保实时更新
   */
  onShow() {
    // 重新加载文章列表
    this.getArticleList(true)
  },
  onLoad() {
    // 加载轮播图数据
    this.getBannerList()
    // 首次加载时不需要重复请求，onShow会处理
  },
  // 获取轮播图数据
  getBannerList() {
    // 模拟数据，实际项目中应该从服务器获取
    this.setData({
      bannerList: [
        { id: 1, imageUrl: '/pages/images/banner1.jpg', link: '' },
        { id: 2, imageUrl: '/pages/images/banner2.jpg', link: '' },
        { id: 3, imageUrl: '/pages/images/banner3.jpg', link: '' }
      ]
    })
  },
  // 获取文章列表
  getArticleList(refresh = false) {
    if (this.data.loading || (!refresh && !this.data.hasMore)) return
    
    this.setData({ loading: true })
    
    // 如果是刷新，重置页码
    if (refresh) {
      this.setData({ page: 1, articleList: [], hasMore: true })
    }
    
    // 请求文章列表接口，第三个参数设为true表示需要token
    request.get('/student/article/getList', {
      page: this.data.page,
      pageSize: this.data.pageSize
    }, true).then(res => {
      this.setData({ loading: false })
      
      if (res.code === 0 && res.data) {
        // 获取文章列表成功，注意items才是文章数组
        const { total, items } = res.data
        
        // 判断是否还有更多数据
        const hasMore = this.data.articleList.length + items.length < total
        
        // 更新数据
        this.setData({
          articleList: [...this.data.articleList, ...items],
          page: this.data.page + 1,
          hasMore,
          total
        })
      } else {
        wx.showToast({
          title: res.message || '获取文章列表失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      console.error('获取文章列表失败', err)
      this.setData({ loading: false })
      wx.showToast({
        title: '获取文章列表失败',
        icon: 'none'
      })
    })
  },
  // 跳转到挂号页面
  goToAppointment() {
    wx.switchTab({
      url: '/pages/appointment/appointment'
    })
  },
  // 跳转到在线咨询页面
  goToConsult() {
    wx.navigateTo({
      url: '/pages/consult/consult'
    })
  },
  // 查看文章详情
  viewArticleDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/articleDetail/articleDetail?id=${id}`
    })
  },
  // 下拉刷新
  onPullDownRefresh() {
    this.getArticleList(true)
    wx.stopPullDownRefresh()
  },
  // 上拉加载更多
  onReachBottom() {
    this.getArticleList()
  }
})
